using System;
using EnvDTE;

namespace NUnitGenAddIn.Core.Test
{
    /// <summary>
    /// Mock Project Item
    /// </summary>
	public class MockProjectItem : ProjectItem
	{
		private FileCodeModel _fileCodeModel;

        /// <summary>
        /// Sets the file code model.
        /// </summary>
        /// <param name="value">The value.</param>
		public void SetFileCodeModel(FileCodeModel value)
		{
			_fileCodeModel = value;
		}

		#region ProjectItem Members

        /// <summary>
        /// Gets the collection.
        /// </summary>
        /// <value>The collection.</value>
		public ProjectItems Collection
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the configuration manager.
        /// </summary>
        /// <value>The configuration manager.</value>
		public ConfigurationManager ConfigurationManager
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the containing project.
        /// </summary>
        /// <value>The containing project.</value>
		public Project ContainingProject
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the DTE.
        /// </summary>
        /// <value>The DTE.</value>
		public DTE DTE
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Deletes this instance.
        /// </summary>
		public void Delete()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the document.
        /// </summary>
        /// <value>The document.</value>
		public Document Document
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Expands the view.
        /// </summary>
		public void ExpandView()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the extender CATID.
        /// </summary>
        /// <value>The extender CATID.</value>
		public string ExtenderCATID
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the extender names.
        /// </summary>
        /// <value>The extender names.</value>
		public object ExtenderNames
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the file code model.
        /// </summary>
        /// <value>The file code model.</value>
		public FileCodeModel FileCodeModel
		{
			get { return _fileCodeModel; }
		}

        /// <summary>
        /// Gets the file count.
        /// </summary>
        /// <value>The file count.</value>
		public short FileCount
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets or sets a value indicating whether this instance is dirty.
        /// </summary>
        /// <value><c>true</c> if this instance is dirty; otherwise, <c>false</c>.</value>
		public bool IsDirty
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the kind.
        /// </summary>
        /// <value>The kind.</value>
		public string Kind
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets or sets the name.
        /// </summary>
        /// <value>The name.</value>
		public string Name
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the object.
        /// </summary>
        /// <value>The object.</value>
		public object Object
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Opens the specified view kind.
        /// </summary>
        /// <param name="ViewKind">Kind of the view.</param>
        /// <returns></returns>
		public Window Open(string ViewKind)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the project items.
        /// </summary>
        /// <value>The project items.</value>
		public ProjectItems ProjectItems
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the properties.
        /// </summary>
        /// <value>The properties.</value>
		public Properties Properties
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Removes this instance.
        /// </summary>
		public void Remove()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Saves the specified file name.
        /// </summary>
        /// <param name="FileName">Name of the file.</param>
		public void Save(string FileName)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Saves as.
        /// </summary>
        /// <param name="NewFileName">New name of the file.</param>
        /// <returns></returns>
		public bool SaveAs(string NewFileName)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="MockProjectItem"/> is saved.
        /// </summary>
        /// <value><c>true</c> if saved; otherwise, <c>false</c>.</value>
		public bool Saved
		{
			get { throw new Exception("The method or operation is not implemented."); }
			set { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the sub project.
        /// </summary>
        /// <value>The sub project.</value>
		public Project SubProject
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Get_s the extender.
        /// </summary>
        /// <param name="ExtenderName">Name of the extender.</param>
        /// <returns></returns>
		public object get_Extender(string ExtenderName)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Get_s the file names.
        /// </summary>
        /// <param name="index">The index.</param>
        /// <returns></returns>
		public string get_FileNames(short index)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Get_s the is open.
        /// </summary>
        /// <param name="ViewKind">Kind of the view.</param>
        /// <returns></returns>
		public bool get_IsOpen(string ViewKind)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		#endregion
	}
}